/*
 * documentosXml.java
 *
 * Created on 8 de septiembre de 2008, 05:09 PM
 */

package administrador;
import java.io.FileOutputStream;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom.output.XMLOutputter;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.Calendar;
import org.jdom.*;
public class documentosXml extends javax.swing.JFrame {
int bodega;
    /** Creates new form documentosXml */
    Conexion conexion;
    public documentosXml(Conexion conexion,int bodega) {
        this.bodega=bodega;
        this.conexion=conexion;
        initComponents();
        this.setBounds(100,100,393,383);
       sacoDocumentos();
        setVisible(true);
    }
    
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        cb_opcion = new javax.swing.JComboBox();
        jButton3 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        cb_posibles = new javax.swing.JComboBox();
        jButton4 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setName("Form"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(administrador.AdministradorApp.class).getContext().getResourceMap(documentosXml.class);
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jPanel1.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, resourceMap.getFont("jPanel1.border.titleFont"), resourceMap.getColor("jPanel1.border.titleColor"))); // NOI18N
        jPanel1.setName("jPanel1"); // NOI18N

        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setName("jButton1"); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText(resourceMap.getString("jButton2.text")); // NOI18N
        jButton2.setName("jButton2"); // NOI18N
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jPanel2.setName("jPanel2"); // NOI18N

        cb_opcion.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Documento" }));
        cb_opcion.setName("cb_opcion"); // NOI18N
        cb_opcion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cb_opcionActionPerformed(evt);
            }
        });

        jButton3.setText(resourceMap.getString("jButton3.text")); // NOI18N
        jButton3.setName("jButton3"); // NOI18N
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        cb_posibles.setName("cb_posibles"); // NOI18N
        cb_posibles.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cb_posiblesActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(cb_posibles, 0, 132, Short.MAX_VALUE)
                            .addComponent(cb_opcion, 0, 132, Short.MAX_VALUE))
                        .addContainerGap(20, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE)
                        .addContainerGap())))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(cb_opcion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(9, 9, 9)
                        .addComponent(cb_posibles, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addGap(26, 26, 26))))
        );

        jButton4.setText(resourceMap.getString("jButton4.text")); // NOI18N
        jButton4.setName("jButton4"); // NOI18N
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
                        .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
                        .addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE))
                    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(32, 32, 32))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    try {
            escribeXMLAutorizacion();
        } catch (SQLException ex) {//GEN-LAST:event_jButton1ActionPerformed
            Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
        }
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        try {
// TODO add your handling code here:
            nuevoSoftware();
        } catch (SQLException ex) {//GEN-LAST:event_jButton2ActionPerformed
            Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
        }
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
    int seleccionTipo=cb_opcion.getSelectedIndex();
    int seleccion=cb_posibles.getSelectedIndex();
    String op=cb_posibles.getItemAt(seleccion).toString();
    //Caso que sean documentos:
    if(seleccionTipo==0||seleccionTipo==-1){
        if(op.equals("Factura")){
        escribeXMLEliminacion(1);
        }else if(op.equals("Nota de Venta")){
        escribeXMLEliminacion(2);
        }else if(op.equals("Nota de Credito")){
        escribeXMLEliminacion(4);
        }else if(op.equals("Nota de Debito")){
        escribeXMLEliminacion(5);
        }else if(op.equals("Factura de Compras")){
        //escribeXMLEliminacion();
        }else if(op.equals("Devolucion en Compras")){
        //escribeXMLEliminacion();
        }
    }else{
    //Caso que sea Puntos de Emision:
        
    
    }
        
}//GEN-LAST:event_jButton3ActionPerformed

private void cb_opcionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cb_opcionActionPerformed
// TODO add your handling code here:
    int seleccion=cb_opcion.getSelectedIndex();
    cb_posibles.removeAllItems();
    if(seleccion==0){
   //System.out.println("Selecciono ="+0);
    //Saco las Documentos posibles de Eliminar
    sacoDocumentos();
    }else{
   //System.out.println("Selecciono ="+1);
    //Saco los Puntos de Emision posibles de Eliminar
    sacoPuntosEmision();
    }
    
}//GEN-LAST:event_cb_opcionActionPerformed

private void cb_posiblesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cb_posiblesActionPerformed
// TODO add your handling code here:
    
    
    
}//GEN-LAST:event_cb_posiblesActionPerformed

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
   try{
    bajaAutorizacion();
   } catch (SQLException ex) {}
}//GEN-LAST:event_jButton4ActionPerformed

public void sacoDocumentos(){
    ResultSet resp=conexion.consultarBase("SELECT nombre FROM tipo_comprobante group by nombre;");
    try {
        resp.beforeFirst();
        while(resp.next()){
        String documento=resp.getString("nombre");
        cb_posibles.addItem(documento);
        }
    } catch (SQLException ex) {
        Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    
}    

public void sacoPuntosEmision(){
ResultSet resp=conexion.consultarBase("SELECT cod_bodega,cod_terminales,nombre FROM terminales t;");
    try {
        resp.beforeFirst();
        while(resp.next()){
        String sucursal=resp.getString(1);
        String terminal=resp.getString(2);
        String nombre=resp.getString(3);
        cb_posibles.addItem(sucursal+"-"+terminal+" "+nombre);
        }
    } catch (SQLException ex) {
        Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
    }


}

public String consultaUltimoCodigo(String tabla,String ultimaAut,String tipo_Comprobante,String columna){
        String consl_ultimoAutOld=     "select max(cod_"+tabla+"),tipo_comprobante "+
                                       "from   "+tabla+" "+
                                       "where  "+columna+"autorizacion="+ultimaAut+" and tipo_comprobante like '"+tipo_Comprobante+"' ";
        return consl_ultimoAutOld;
    }
    public String consultaprimeNueva(String newAut,String tipo_comprobante){
        String consl_primAutNew="select min(num_secuencia),nombre "+
                                    "from   tipo_comprobante "+
                                    "where  cod_autorizacion=(select max(cod_auto) from autorizacion where numero="+newAut+") and "+
                                    "(nombre like '"+tipo_comprobante+"') "+
                                    "group by nombre";
        return consl_primAutNew;
    }
    public void DetalleCambioSw(Element detalle,String puntoEmision,String cod_finOld,String cod_iniNew,String tipo_comprobante,String xml){
             Element codDoc= new Element("codDoc");
             codDoc.setText(tipo_comprobante);
             detalle.addContent(codDoc);

             Element estab= new Element("estab");
             estab.setText(aumentaCeros(String.valueOf(bodega)));
             detalle.addContent(estab);

             Element ptoEmi= new Element("ptoEmi");
             ptoEmi.setText(aumentaCeros(puntoEmision));
             detalle.addContent(ptoEmi);

             if(xml.equals("cambioSoftware")){
                 
                 Element finOld= new Element("finOld");
                 finOld.setText(cod_finOld);
                 detalle.addContent(finOld);
                 
                 Element iniNew= new Element("iniNew");
                 iniNew.setText(cod_iniNew);
                 detalle.addContent(iniNew);
             }else{
                 Element finOld= new Element("fin");
                 finOld.setText(cod_finOld);
                 detalle.addContent(finOld);
             }
             
    }
    
    

    public String aumentaCeros(String numeroEntrada){
        int contadorNE = numeroEntrada.length();
        contadorNE = 3 - contadorNE;
        for (int i = 0; i < contadorNE; i++) {
            numeroEntrada = "0" + numeroEntrada;
        }
        return numeroEntrada;
    }
    
    public void nuevoSoftware() throws SQLException{
             String conusltaTerminaless="select cod_terminales from terminales  where cod_bodega="+bodega;
             String consultaRuc=     "select ruc from parametros limit 1 ";
             String consultaAutorizaciones="select cod_auto,numero,now()"+
                                       "from   autorizacion  order by cod_auto asc" ;
             java.sql.ResultSet autorizaciones=conexion.consultarBase(consultaAutorizaciones);
             java.util.Vector vector=new java.util.Vector();
             while(autorizaciones.next()){
                 vector.addElement(autorizaciones.getString("numero").toString());
             }

             String newAut=vector.elementAt(vector.size()-1).toString();
             String ultimaAut= ultimaAut=vector.elementAt(vector.size()-2).toString();
             
             String consl_ultimoAutOld=consultaUltimoCodigo("pedido",ultimaAut,"F","num_");   
             String consl_primAutNew=consultaprimeNueva(newAut,"Factura");

             String consl_ultimoAutOldVenta=consultaUltimoCodigo("pedido",ultimaAut,"N","num_");
             String consl_primAutNewVenta=consultaprimeNueva(newAut,"Nota de Venta");

             String consl_ultimoAutOldCredito=consultaUltimoCodigo("nota",ultimaAut,"C","");
             String consl_primAutNewCredito=consultaprimeNueva(newAut,"Nota de Credito");
             
             String consl_ultimoAutOldDebito=consultaUltimoCodigo("nota",ultimaAut,"D","");
             String consl_primAutNewDebito=consultaprimeNueva(newAut,"Nota de Debito");
                                
             Element daniel1 = new Element("autorizacion");
             Element codTipoTra= new Element("codTipoTra");
             codTipoTra.setText("7");
             daniel1.addContent( codTipoTra);
           
             java.sql.ResultSet rucc=conexion.consultarBase(consultaRuc);
             rucc.next();
             Element ruc= new Element("ruc");
             ruc.setText(rucc.getString("ruc").toString());
             daniel1.addContent(ruc);
             
             Element autOld= new Element("autOld");
             autOld.setText(ultimaAut);
             daniel1.addContent(autOld);
             
             Element autNew= new Element("autNew");
             autNew.setText(newAut);
             daniel1.addContent(autNew);
             
             Element fechas= new Element("fecha");
             fechas.setText(fechaActual());
             daniel1.addContent(fechas);
             
             Element detalles= new Element("detalles");
             java.util.Vector principalterminal=conexion.consulta(conusltaTerminaless);
             java.util.Vector internoterminal=new java.util.Vector();
             for(int k=0;k<principalterminal.size();k++){
                     internoterminal=(java.util.Vector)principalterminal.elementAt(k);
             
                     java.util.Vector principalfin=conexion.consulta(consl_ultimoAutOld);
                     java.util.Vector internofin=new java.util.Vector();
                     java.util.Vector principalInicio=conexion.consulta(consl_primAutNew);
                     java.util.Vector internoInicio=new java.util.Vector();
                     boolean nulo=false;
                     for(int i=0;i<principalfin.size();i++){
                         internofin=(java.util.Vector)principalfin.elementAt(i);
                         try{
                             if(internofin.elementAt(i).equals(null)){
                                 nulo=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nulo=true;
                         }
                     }
                     
                     for(int i=0;i<principalInicio.size();i++){
                             internoInicio=(java.util.Vector)principalInicio.elementAt(i);
                             if(nulo==true){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0",internoInicio.elementAt(0).toString(),"1","cambioSoftware");
                                 detalles.addContent(detalle);
                             }else
                             if(internofin.elementAt(1).toString().equals("F") && internoInicio.elementAt(1).toString().equals("Factura")){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofin.elementAt(0).toString(),internoInicio.elementAt(0).toString(),"1","cambioSoftware");
                                 detalles.addContent(detalle);
                             }     
                     }//fin factura

                     
                     java.util.Vector principalfinVenta=conexion.consulta(consl_ultimoAutOldVenta);
                     java.util.Vector internofinVenta=new java.util.Vector();
                     java.util.Vector principalInicioVenta=conexion.consulta(consl_primAutNewVenta);
                     java.util.Vector internoInicioVenta=new java.util.Vector();
                     boolean nuloVenta=false;
                     for(int i=0;i<principalfinVenta.size();i++){
                         internofinVenta=(java.util.Vector)principalfinVenta.elementAt(i);
                         try{
                             if(internofinVenta.elementAt(i).equals(null)){
                                 nuloVenta=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nuloVenta=true;
                         }
                     }
                    
                     for(int i=0;i<principalInicioVenta.size();i++){
                             internoInicioVenta=(java.util.Vector)principalInicioVenta.elementAt(i);
                             if(nuloVenta==true){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0",internoInicioVenta.elementAt(0).toString(),"2","cambioSoftware");
                                 detalles.addContent(detalle);
                             }else
                             if(internofinVenta.elementAt(1).toString().equals("N") && internoInicioVenta.elementAt(1).toString().equals("Nota de Venta")){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofinVenta.elementAt(0).toString(),internoInicioVenta.elementAt(0).toString(),"2","cambioSoftware");
                                 detalles.addContent(detalle);
                             }     
                     }//fin Nota de Venta
                     
                         
                     java.util.Vector principalfinCredito=conexion.consulta(consl_ultimoAutOldCredito);
                     java.util.Vector internofinCredito=new java.util.Vector();
                     java.util.Vector principalInicioCredito=conexion.consulta(consl_primAutNewCredito);
                     java.util.Vector internoInicioCredito=new java.util.Vector();
                     boolean nuloCredito=false;
                     for(int i=0;i<principalfinCredito.size();i++){
                         internofinCredito=(java.util.Vector)principalfinCredito.elementAt(i);
                         try{
                             if(internofinCredito.elementAt(i).equals(null)){
                                 nuloCredito=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nuloCredito=true;
                         }
                     }
                     
                         for(int i=0;i<principalInicioCredito.size();i++){
                                 internoInicioCredito=(java.util.Vector)principalInicioCredito.elementAt(i);
                                 if(nuloCredito==true){
                                     Element detalle= new Element("detalle");
                                     DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0",internoInicioCredito.elementAt(0).toString(),"4","cambioSoftware");
                                     detalles.addContent(detalle);
                                 }else
                                 if(internofinCredito.elementAt(1).toString().equals("C") && internoInicioCredito.elementAt(1).toString().equals("Nota de Credito")){
                                     Element detalle= new Element("detalle");
                                     DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofinCredito.elementAt(0).toString(),internoInicioCredito.elementAt(0).toString(),"4","cambioSoftware");
                                     detalles.addContent(detalle);
                                 }     
                         }//fin Nota de Creadito
                     
                     
                     java.util.Vector principalfinDebito=conexion.consulta(consl_ultimoAutOldDebito);
                     java.util.Vector internofinDebito=new java.util.Vector();
                     java.util.Vector principalInicioDebito=conexion.consulta(consl_primAutNewDebito);
                     java.util.Vector internoInicioDebito=new java.util.Vector();
                     boolean nuloDebito=false;
                     for(int i=0;i<principalfinDebito.size();i++){
                         internofinDebito=(java.util.Vector)principalfinDebito.elementAt(i);
                         try{
                             if(internofinDebito.elementAt(i).equals(null)){
                                 nuloDebito=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nuloDebito=true;
                         }
                     }
                     
                         for(int i=0;i<principalInicioDebito.size();i++){
                                 internoInicioDebito=(java.util.Vector)principalInicioDebito.elementAt(i);
                                 if(nuloDebito==true){
                                     Element detalle= new Element("detalle");
                                     DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0",internoInicioDebito.elementAt(0).toString(),"5","cambioSoftware");
                                     detalles.addContent(detalle);
                                 }else
                                 if(internofinDebito.elementAt(1).toString().equals("D") && internoInicioDebito.elementAt(1).toString().equals("Nota de Debito")){
                                     Element detalle= new Element("detalle");
                                     DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofinDebito.elementAt(0).toString(),internoInicioDebito.elementAt(0).toString(),"5","cambioSoftware");
                                     detalles.addContent(detalle);
                                 }     
                         }//fin Nota de Debito
                     
            }//fin terminal
             daniel1.addContent(detalles);
             escribeXml("./xml/Solicitud por cambio de Software.xml",daniel1);
     }
    public void bajaAutorizacion() throws SQLException{
             String conusltaTerminaless="select cod_terminales from terminales  where cod_bodega="+bodega;
             String consultaRuc=     "select ruc from parametros limit 1 ";
             String consultaAutorizaciones="select numero "+
                                           "from   autorizacion "+
                                           "where  cod_auto=(select max(cod_auto) from   autorizacion  order by cod_auto asc)";
             
             java.sql.ResultSet autorizaciones=conexion.consultarBase(consultaAutorizaciones);
             java.util.Vector vector=new java.util.Vector();
             while(autorizaciones.next()){
                 vector.addElement(autorizaciones.getString("numero").toString());
             }
             String ultimaAut=vector.elementAt(vector.size()-1).toString();

             String consl_ultimoAutOld=consultaUltimoCodigo("pedido",ultimaAut,"F","num_");   
             String consl_ultimoAutOldVenta=consultaUltimoCodigo("pedido",ultimaAut,"N","num_");
             String consl_ultimoAutOldCredito=consultaUltimoCodigo("nota",ultimaAut,"C","");
             String consl_ultimoAutOldDebito=consultaUltimoCodigo("nota",ultimaAut,"D","");
             
                                
             Element daniel1 = new Element("autorizacion");
             Element codTipoTra= new Element("codTipoTra");
             codTipoTra.setText("8");
             daniel1.addContent( codTipoTra);
           
             java.sql.ResultSet rucc=conexion.consultarBase(consultaRuc);
             rucc.next();
             Element ruc= new Element("ruc");
             ruc.setText(rucc.getString("ruc").toString());
             daniel1.addContent(ruc);
             
             Element autOld= new Element("numAut");
             autOld.setText(ultimaAut);
             daniel1.addContent(autOld);
             
//             Element autNew= new Element("autNew");
//             autNew.setText(newAut);
//             daniel1.addContent(autNew);
             
             Element fechas= new Element("fecha");
             fechas.setText(fechaActual());
             daniel1.addContent(fechas);
             
             Element detalles= new Element("detalles");
             java.util.Vector principalterminal=conexion.consulta(conusltaTerminaless);
             java.util.Vector internoterminal=new java.util.Vector();
             for(int k=0;k<principalterminal.size();k++){
                     internoterminal=(java.util.Vector)principalterminal.elementAt(k);
             
                     java.util.Vector principalfin=conexion.consulta(consl_ultimoAutOld);
                     java.util.Vector internofin=new java.util.Vector();
                     boolean nulo=false;
                     for(int i=0;i<principalfin.size();i++){
                         internofin=(java.util.Vector)principalfin.elementAt(i);
                         try{
                             if(internofin.elementAt(i).equals(null)){
                                 nulo=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nulo=true;
                         }
                     }
                     for(int i=0;i<principalfin.size();i++){
                             internofin=(java.util.Vector)principalfin.elementAt(i);
                             if(nulo==true){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0","","1","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }else
                             if(internofin.elementAt(1).toString().equals("F")){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofin.elementAt(0).toString(),"","1","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }     
                     }//fin factura
                     
                     java.util.Vector principalfinVenta=conexion.consulta(consl_ultimoAutOldVenta);
                     java.util.Vector internofinVenta=new java.util.Vector();
                     boolean nuloVenta=false;
                     for(int i=0;i<principalfinVenta.size();i++){
                         internofinVenta=(java.util.Vector)principalfinVenta.elementAt(i);
                         try{
                             if(internofinVenta.elementAt(i).equals(null)){
                                 nuloVenta=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nuloVenta=true;
                         }
                     }
                     for(int i=0;i<principalfinVenta.size();i++){
                             internofinVenta=(java.util.Vector)principalfinVenta.elementAt(i);
                             if(nuloVenta==true){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0","","2","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }else
                             if(internofinVenta.elementAt(1).toString().equals("N")){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofinVenta.elementAt(0).toString(),"","2","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }     
                     }//fin Nota de Venta
                     
                     java.util.Vector principalfinCredito=conexion.consulta(consl_ultimoAutOldCredito);
                     java.util.Vector internofinCredito=new java.util.Vector();
                     boolean nuloCredito=false;
                     for(int i=0;i<principalfinCredito.size();i++){
                         internofinCredito=(java.util.Vector)principalfinCredito.elementAt(i);
                         try{
                             if(internofinCredito.elementAt(i).equals(null)){
                                 nuloCredito=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nuloCredito=true;
                         }
                     }
                     for(int i=0;i<principalfinCredito.size();i++){
                             internofinCredito=(java.util.Vector)principalfinCredito.elementAt(i);
                             if(nuloCredito==true){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0","","4","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }else
                             if(internofinCredito.elementAt(1).toString().equals("C")){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofinCredito.elementAt(0).toString(),"","4","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }     
                     }//fin Nota de Creadito
                     
                     java.util.Vector principalfinDebito=conexion.consulta(consl_ultimoAutOldDebito);
                     java.util.Vector internofinDebito=new java.util.Vector();
                     boolean nuloDebito=false;
                     for(int i=0;i<principalfinDebito.size();i++){
                         internofinDebito=(java.util.Vector)principalfinDebito.elementAt(i);
                         try{
                             if(internofinDebito.elementAt(i).equals(null)){
                                 nuloDebito=true;
                             }
                         }catch(java.lang.NullPointerException f){
                             nuloDebito=true;
                         }
                     }
                     for(int i=0;i<principalfinDebito.size();i++){
                             internofinDebito=(java.util.Vector)principalfinDebito.elementAt(i);
                             if(nuloDebito==true){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),"0","","5","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }else
                             if(internofinDebito.elementAt(1).toString().equals("D")){
                                 Element detalle= new Element("detalle");
                                 DetalleCambioSw(detalle,internoterminal.elementAt(0).toString(),internofinDebito.elementAt(0).toString(),"","5","bajaAutorizacion");
                                 detalles.addContent(detalle);
                             }     
                     }//fin Nota de Debito
            }//fin terminal
             daniel1.addContent(detalles);
             escribeXml("./xml/Solicitud por baja Autorizacion.xml",daniel1);
     }

public Element cabecera_Autorizacion(Element daniel1){
        String consultaRuc=     "select ruc from parametros limit 1 ";
        String consultaCabecera="select cod_auto,numero,now() "+
                            "from   autorizacion "+
                            "where  cod_auto=(select max(cod_auto) from autorizacion)";
        
        try {
            //Cabecera Tramite 6 Autorizacion:
            daniel1 = new Element("autorizacion");
            Element codTipoTra = new Element("codTipoTra");
            codTipoTra.setText("6");
            daniel1.addContent(codTipoTra);

            java.sql.ResultSet rucc = conexion.consultarBase(consultaRuc);
            rucc.next();
            Element ruc = new Element("ruc");
            ruc.setText(rucc.getString("ruc").toString());
            daniel1.addContent(ruc);

            String numAuto = "";
            String fecha = "";
            java.util.Vector principal = conexion.consulta(consultaCabecera);
            java.util.Vector interno = new java.util.Vector();
            for (int i = 0; i < principal.size(); i++) {
                interno = (java.util.Vector) principal.elementAt(i);
                numAuto = interno.elementAt(1).toString();
                fecha = interno.elementAt(2).toString();
            }
            Element numAutor = new Element("numAuto");
            numAutor.setText(numAuto);
            daniel1.addContent(numAutor);

            Element fechas = new Element("fecha");
            fechas.setText(fecha);
            daniel1.addContent(fechas);

            
        } catch (SQLException ex) {
            Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
        }
        return daniel1;
    } 
    
    public Element detalleAutorizacion(){
        
        String consultaDetalle= "select  t.*,min(idcodigo) "+
                            "from    tipo_comprobante t "+
                            "where   t.cod_autorizacion= "+
                            "(select cod_auto "+
                            "from    autorizacion "+
                            "where   cod_auto=(select max(cod_auto) from autorizacion)) "+
                            "and     t.nombre like '%'group by t.nombre ";
        
        //Para sacar los terminales de la Fatura y Nota de Venta:
        String consultaTerminales="select cod_bodega,cod_terminales from terminales where cod_bodega="+bodega;
        
        
          
             //Para la factura y nota de credito
             Element detalles= new Element("detalles");
             java.util.Vector principal2=conexion.consulta(consultaTerminales);
             java.util.Vector interno2=new java.util.Vector();
             for(int j=0;j<principal2.size();j++){
                 java.util.Vector principal1=conexion.consulta(consultaDetalle);
                 java.util.Vector interno1=new java.util.Vector();
                 interno2=(java.util.Vector)principal2.elementAt(j);
                 for(int i=0;i<principal1.size();i++){
                     
                     interno1=(java.util.Vector)principal1.elementAt(i);
                     if(interno1.elementAt(1).toString().equals("Factura")){
                         Element detalle= new Element("detalle");
                         Element codDoc= new Element("codDoc");
                         codDoc.setText("1");
                         detalle.addContent(codDoc);

                         Element estab= new Element("estab");
                         estab.setText(aumentaCeros(String.valueOf(bodega)));
                         detalle.addContent(estab);

                         Element ptoEmi= new Element("ptoEmi");
                         ptoEmi.setText(aumentaCeros(interno2.elementAt(1).toString()));
                         detalle.addContent(ptoEmi);

                         Element inicio= new Element("inicio");
                         inicio.setText(interno1.elementAt(3).toString());
                         detalle.addContent(inicio);
                         detalles.addContent(detalle);
                     }else if(interno1.elementAt(1).toString().equals("Nota de Venta")){
                         Element detalle= new Element("detalle");
                         Element codDoc= new Element("codDoc");
                         codDoc.setText("2");
                         detalle.addContent(codDoc);

                         Element estab= new Element("estab");
                         estab.setText(aumentaCeros(String.valueOf(bodega)));
                         detalle.addContent(estab);

                         Element ptoEmi= new Element("ptoEmi");
                         ptoEmi.setText(aumentaCeros(interno2.elementAt(1).toString()));
                         detalle.addContent(ptoEmi);

                         Element inicio= new Element("inicio");
                         inicio.setText(interno1.elementAt(3).toString());
                         detalle.addContent(inicio);
                         detalles.addContent(detalle);
                     }
                     //detalles.addContent(detalle);
             }
                 
             }
             
    
              //Para la Nota de Credito y Nota de Debito
             principal2=conexion.consulta(consultaTerminales);
             interno2=new java.util.Vector();
             for(int j=0;j<principal2.size();j++){
                 java.util.Vector principal1=conexion.consulta(consultaDetalle);
                 java.util.Vector interno1=new java.util.Vector();
                 interno2=(java.util.Vector)principal2.elementAt(j);
                 for(int i=0;i<principal1.size();i++){
                    
                     interno1=(java.util.Vector)principal1.elementAt(i);
                     if(interno1.elementAt(1).toString().equals("Nota de Credito")){
                         Element detalle= new Element("detalle");
                         Element codDoc= new Element("codDoc");
                         codDoc.setText("4");
                         detalle.addContent(codDoc);

                         Element estab= new Element("estab");
                         estab.setText(aumentaCeros(String.valueOf(bodega)));
                         detalle.addContent(estab);

                         Element ptoEmi= new Element("ptoEmi");
                         ptoEmi.setText(aumentaCeros(interno2.elementAt(1).toString()));
                         detalle.addContent(ptoEmi);

                         Element inicio= new Element("inicio");
                         inicio.setText(interno1.elementAt(3).toString());
                         detalle.addContent(inicio);
                         detalles.addContent(detalle);
                     }else if(interno1.elementAt(1).toString().equals("Nota de Debito")){
                         Element detalle= new Element("detalle");
                         Element codDoc= new Element("codDoc");
                         codDoc.setText("5");
                         detalle.addContent(codDoc);

                         Element estab= new Element("estab");
                         estab.setText(aumentaCeros(String.valueOf(bodega)));
                         detalle.addContent(estab);

                         Element ptoEmi= new Element("ptoEmi");
                         ptoEmi.setText(aumentaCeros(interno2.elementAt(1).toString()));
                         detalle.addContent(ptoEmi);

                         Element inicio= new Element("inicio");
                         inicio.setText(interno1.elementAt(3).toString());
                         detalle.addContent(inicio);
                         detalles.addContent(detalle);
                     }
                    
             }
                 
             }
             
            return detalles; 
             
    }
    
    
    public Element detalleEliminacion(int tipoDoc){
        Element detalles = new Element("detalles");
        
        try {
            //Para sacar la ultima del tipo de Documento:
            String letraDoc = "";
            String nombreDoc = "";
            
            if (tipoDoc == 1) {
                //Caso que sea Factura
                letraDoc = "F";
                nombreDoc = "Facturacion";
            }
            if (tipoDoc == 2) {
                //Caso que sea Factura
                letraDoc = "N";
                nombreDoc = "Nota de Venta";
            }
            if(tipoDoc==4){
                //Caso que sea Noda de Credito
                letraDoc = "C";
                nombreDoc = "Nota de Credito";
            }
            if(tipoDoc==5){
                //Caso que sea Noda de Debito
                letraDoc = "D";
                nombreDoc = "Nota de Debito";
            }
            //Saco el maximo
            ResultSet resp = conexion.consultarBase("select numero,cod_auto,now() from   autorizacion where  cod_auto=(select max(cod_auto) from autorizacion); ;");
            resp.next();
            String autorizacion = resp.getString(1);
            
            ResultSet respTerm=null;
            String ultNum="";
            //Factura Nota de Venta:
            if(tipoDoc>0&&tipoDoc<3){
            //Saco el ultimo documento del tipo de Comprobante:
            resp = conexion.consultarBase("SELECT max(cod_pedido) FROM pedido p where tipo_comprobante='" + letraDoc + "' and num_autorizacion='" + autorizacion + "';");
            resp.next();
            ultNum = resp.getString(1);

            //Para sacar los terminales de la Fatura y Nota de Venta:
            respTerm = conexion.consultarBase("select cod_bodega,cod_terminal from pedido group by cod_terminal");
            }
            //Nota de Credio-Debito
            if(tipoDoc>3&&tipoDoc<6){
            //Saco el ultimo documento del tipo de Comprobante:
            resp = conexion.consultarBase("SELECT max(cod_nota) FROM nota where tipo_comprobante='" + letraDoc + "' and autorizacion='" + autorizacion + "';");
            resp.next();
            ultNum = resp.getString(1);

            //Para sacar los terminales de la Fatura y Nota de Venta:
            respTerm = conexion.consultarBase("select cod_bodega,cod_terminales from terminales where cod_bodega="+bodega);
            }
            
            
            
            while (respTerm.next()) {
                String sucursal=String.valueOf(respTerm.getInt(1));
                String terminal=String.valueOf(respTerm.getInt(2));
                
                
                
                //Creo Archivo XML:
            Element detalle = new Element("detalle");
            Element codDoc = new Element("codDoc");
            codDoc.setText(String.valueOf(tipoDoc));
            detalle.addContent(codDoc);

            Element estab = new Element("estab");
            estab.setText(aumentaCeros(sucursal));
            detalle.addContent(estab);

            Element ptoEmi = new Element("ptoEmi");
            ptoEmi.setText(aumentaCeros(terminal));
            detalle.addContent(ptoEmi);

            Element inicio = new Element("fin");
            inicio.setText(ultNum);
            detalle.addContent(inicio);
            detalles.addContent(detalle);
                
                
            }


            
        } catch (SQLException ex) {
            Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
        }
             //detalles.addContent(detalle);
            return detalles;
    }
    
    public String fechaActual(){
               //Formato Fecha:
                String DATE_FORMAT = "dd/MM/yyyy";
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);
                Calendar c1 = Calendar.getInstance();
                String fecha=sdf.format(c1.getTime());
                return fecha;
    }
    
    
    public Element cabecera_Eliminacion(Element daniel1){
        String consultaRuc=     "select ruc from parametros limit 1 ";
        String consultaCabecera="select cod_auto,numero "+
                            "from   autorizacion "+
                            "where  cod_auto=(select max(cod_auto) from autorizacion)";
        
        try {
            //Cabecera Tramite 6 Autorizacion:
            daniel1 = new Element("autorizacion");
            Element codTipoTra = new Element("codTipoTra");
            codTipoTra.setText("11");
            daniel1.addContent(codTipoTra);
                //Pongo el RUC:
                java.sql.ResultSet rucc = conexion.consultarBase(consultaRuc);
                rucc.next();
                Element ruc = new Element("ruc");
                ruc.setText(rucc.getString("ruc").toString());
                daniel1.addContent(ruc);
                //Pongo la Autorizacion y Fecha:
                String numAuto = "";
                String fecha = "";
                java.util.Vector principal = conexion.consulta(consultaCabecera);
                java.util.Vector interno = new java.util.Vector();
                for (int i = 0; i < principal.size(); i++) {
                    interno = (java.util.Vector) principal.elementAt(i);
                    numAuto = interno.elementAt(1).toString();
                    
                }
                //Formato Fecha:
                String DATE_FORMAT = "dd-MM-yyyy";
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);
                Calendar c1 = Calendar.getInstance();
                fecha=sdf.format(c1.getTime());
                //Autorizacion:
                Element numAutor = new Element("numAuto");
                numAutor.setText(numAuto);
                daniel1.addContent(numAutor);

                Element fechas = new Element("fecha");
                fechas.setText(fecha);
                daniel1.addContent(fechas);

            
        } catch (SQLException ex) {
            Logger.getLogger(documentosXml.class.getName()).log(Level.SEVERE, null, ex);
        }
        return daniel1;
    } 
    
    

    public void escribeXMLAutorizacion() throws SQLException{
             Element daniel1=null;
             daniel1=cabecera_Autorizacion(daniel1);
             Element detalles=detalleAutorizacion();
             daniel1.addContent(detalles);
             escribeXml("./xml/Solicitud de Autorizacion.xml",daniel1);
     }
    
    
     public void escribeXMLEliminacion(int opcion){
             Element daniel1=null;
             daniel1=cabecera_Eliminacion(daniel1);
             //Ingreso como parametro: el tipo de documento a eliminar:
             int tipoDoc=opcion;
             Element detalles=detalleEliminacion(tipoDoc);
             daniel1.addContent(detalles);
             escribeXml("./xml/Solicitud por Exclusion de Puntos de Emision o Docuentos.xml",daniel1);
     }
    
    
     public void escribeXml(String path,Element daniel1){
             Document doc = new Document(daniel1);
             try {
                XMLOutputter serializer = new XMLOutputter(org.jdom.output.Format.getPrettyFormat());
                FileOutputStream file=new FileOutputStream(path);
                serializer.output(doc,file);
                file.flush();
                file.close();
                serializer.output(doc, System.out);
             }
             catch (IOException e) {System.err.println(e);}
     }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox cb_opcion;
    private javax.swing.JComboBox cb_posibles;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    // End of variables declaration//GEN-END:variables

}
